home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 July / EnigmA AMIGA RUN 29 (1998)(G.R. Edizioni)(IT)[!][issue 1998-07 & 08].iso / earkit / news / thor / rexx / bbsread / getcmd.br < prev    next >
Text File  |  1998-05-24  |  3KB  |  131 lines

  1. /*
  2. ** $VER: GetCmdInfo.thor 1.0 (5.9.97)
  3. ** by Eirik Nicolai Synnes
  4. **
  5. ** Displays the templates of all, one or a matching set of the THOR or
  6. ** BBSREAD ARexx command sets. Use "rx GetCmd.br ?" for help
  7. **
  8. */
  9.  
  10. options results
  11. parse arg arguments
  12.  
  13. cmdline = 'COMMAND,THOR/S,BBSREAD/S,MATCH/S'
  14. cmdhelp = 'Template: ' || cmdline || '0A'x || '   Usage: GetCmd.br [BBSREAD] [THOR] (shows all available commands)' || '0A'x || '       or GetCmd.br <command> [BBSREAD] [THOR] (shows one specific command)' || '0A'x || '       or GetCmd.br MATCH <command> [BBSREAD] [THOR] (substring search)'
  15.  
  16. showncmd = 0; showcmd = 0
  17.  
  18.  
  19. /*
  20. ** Open BBSREAD ARexx port
  21. */
  22.  
  23. if ~(show('P', 'BBSREAD')) then do
  24.     address(command)
  25.     'Run >NIL: `GetEnv THOR/THORPath`bin/LoadBBSRead'
  26.     'WaitForPort BBSREAD'
  27.     if (rc ~= 0) then displayerror(30, 'SortMail', 'Couldn''t open BBSREAD''s ARexx port.')
  28. end
  29.  
  30.  
  31. /*
  32. ** See if there is a Thor ARexx port we can shanghai
  33. */
  34.  
  35. ports = show('P')
  36. do i = 1 to words(ports)
  37.     if pos(' THOR.', ports) > 0 then thorport = word(substr(ports, pos(' THOR.', ports)), 1)
  38. end
  39.  
  40. /*
  41. ** Parse command line arguments
  42. */
  43.  
  44. if (arguments = '?') then do
  45.     say cmdhelp
  46.     exit(5)
  47. end
  48.  
  49. address(bbsread)
  50. 'READARGS TEMPLATE "'cmdline'" STEM 'args' CMDLINE 'arguments
  51. if (rc ~= 0) then do
  52.     say BBSREAD.LASTERROR
  53.     say cmdhelp
  54.     exit(5)
  55. end
  56.  
  57. if (symbol('args.COMMAND') = 'VAR') then showcmd = 1
  58.  
  59. if ~(args.BBSREAD) & ~(args.THOR) then do
  60.     say 'Specify BBSREAD and/or THOR.'
  61.     say cmdhelp
  62.     exit(5)
  63. end
  64.  
  65. if (args.THOR) & ~(args.BBSREAD) & (symbol('thorport') ~= 'VAR') then do
  66.     say 'Could not find Thor ARexx port.'
  67.     exit(5)
  68. end
  69.  
  70. if (args.THOR) & (symbol('thorport') ~= 'VAR') then do
  71.     say 'Could not find Thor ARexx port, only showing BBSREAD commands.'; say
  72. end
  73.  
  74. if ~(showcmd) & (args.MATCH) then do
  75.     say 'MATCH can only be used together with a string to search for.'
  76.     say cmdhelp
  77.     exit(5)
  78. end
  79.  
  80. /*
  81. ** Show the command template
  82. */
  83.  
  84. cnt = 0
  85. if (args.THOR) then do
  86.     cnt = cnt + 1; port.cnt.name = thorport; port.cnt.type = 'THOR'
  87. end
  88. if (args.BBSREAD) then do
  89.     cnt = cnt + 1; port.cnt.name = 'BBSREAD'; port.cnt.type = 'BBSREAD'
  90. end
  91. port.count = cnt; drop cnt
  92.  
  93. do j = 1 to port.count
  94.     address(port.j.name)
  95.  
  96.     'GETCOMMANDINFO STEM 'cmd
  97.     if (rc ~= 0) then do
  98.         say 'GETCOMMANDINFO: 'THOR.LASTERROR
  99.         exit(rc)
  100.     end
  101.  
  102.     if ~(showcmd) then do
  103.         if port.j.type = 'THOR' then say 'THOR Arexx commands (' || cmd.count || ' in total):'
  104.         else say 'BBSREAD Arexx commands (' || cmd.count || ' in total):'
  105.     end
  106.  
  107.     do i = 1 to cmd.count
  108.         if (showcmd) then do
  109.             if (~(args.MATCH) & (upper(args.COMMAND) = upper(cmd.i))) | ((args.MATCH) & (index(upper(cmd.i), upper(args.COMMAND)) > 0)) then do
  110.                 if port.j.type = 'BBSREAD' then say 'Found BBSREAD command:'; else say 'Found THOR command:'
  111.                 say 'Command:  'cmd.i
  112.                 say 'Template: 'cmd.i.template
  113.                 say
  114.                 showncmd = 1
  115.             end
  116.         end
  117.         else do
  118.             say 'Command:  'cmd.i
  119.             say 'Template: 'cmd.i.template
  120.             say
  121.         end
  122.     end
  123. end
  124.  
  125. if (showcmd) & ~(showncmd) then do
  126.     if (args.MATCH) then say 'Could not find substring "' || args.COMMAND || '" in any ARexx command.'
  127.     else say 'Could not find ARexx command "' || args.COMMAND || '"'
  128. end
  129.  
  130. exit(0)
  131.